<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div>
        11111
    </div>
</body>
<script>
    // JS组成
    // ECMAScript (ES5 => ES6)
    // BOM   -> Browser Object Model ->  浏览器对象模型(提供了操作浏览器的接口)
    // DOM   -> Document Object Model -> 文档对象模型(提供了操作文档的接口)


    // 三种常见打印方式
    // console.log()
    // document.write("<h2>你好</h2>");
    // alert(111);

    // 变量 -> 存储数据的容器
    // var a;
    // a = 10;

    // var a = 10;

    // var a,b,c,d;
    // a = 10;
    // b = 20;

    // var a = 10,b=20,c=30;

    // var a = 10;
    // a = a + 1;

    // JS基本数据类型
    // string  number  boolean null undefined object(array) symbol bigInt

    // 强制类型转换
    // String()  Number()  Boolean();

    // string  number  boolean null undefined

    // String()
    // console.log(String("hello"));
    // console.log(String(100)); // "100"
    // console.log(String(NaN)); // "NaN"
    // console.log(String(true)); // "true"
    // console.log(String(null)); // "null"
    // console.log(String(undefined)); // "undefined"


    // Number()
    // console.log(Number("hello")); // "NaN"
    // console.log(Number("10")); // 10
    // console.log(Number(""));  // 0
    // console.log(Number(" "));  // 0

    // console.log(Number(100)); // "100"
    // console.log(Number(NaN)); // "NaN"

    // console.log(Number(true)); // 1
    // console.log(Number(false)); // 0

    // console.log(Number(null)); // 0
    // console.log(Number(undefined)); // NaN


    // Boolean()
    // console.log(Boolean("hello")); //true
    // console.log(Boolean(100)); //true
    // console.log(Boolean(-100)); //true
    // console.log(Boolean(Infinity)); // true

    // console.log(Boolean("")); // false
    // console.log(Boolean(0)); // false
    // console.log(Boolean(NaN)); // false
    // console.log(Boolean(false)); // false
    // console.log(Boolean(null)); // false
    // console.log(Boolean(undefined)); // false

    // console.log(!!("")); // false
    // console.log(!!(0)); // false
    // console.log(!!(NaN)); // false
    // console.log(!!(false)); // false
    // console.log(!!(null)); // false
    // console.log(!!(undefined)); // false



    // 隐式类型转换
    //


    // if ("hello") {
    //     console.log(true);
    // } else {
    //     console.log(false);
    // }

    // !

    // 条件反转
    // var grade = Math.round(Math.random() * 100);
    // console.log(grade >= 60);
    // console.log(!(grade >= 60));

    // 隐式转布尔值
    // console.log(!true);
    // console.log(!false);

    // console.log(!1);  // 1 -> true -> 取反 false
    // console.log(!0);  // 0 -> false -> 取反 true

    // console.log(!!1);  // 1 -> true -> 取反之后在取反 true
    // console.log(!!0);  // 1 -> false ->  取反之后在取反 false

    // 运算符
    // 算术运算符  * / %  大于 + /
    // 关系运算符  >  >=  <  <=  大于  ==  === != !==
    // 逻辑运算符  ! 大于 &&  大于 ||
    // 三目运算符  ? :
    // 赋值运算符  ++  -- 大于  = += -= *= /= % =

    // 运算符的优先级
    // () [] . >  ! ++ -- typeof  > 算术运算符  >  关系运算符 >  逻辑运算符(!) > 三目运算符 >  赋值运算符(++ --)

    // Math.random() + 1

    // 选择结构  if switch
    // if常用于做条件判断,范围判断
    // switch常用于做数值判断

    // if(month == 1 || month == 3)

    // switch(month){
    //     case 1:
    //     case 3:
    //     case 5:
    //     case 7:
    // }


    // if(){}

    // if(){

    // }else{

    // }

    // if(){

    // }else if(){

    // }else{

    // }

    // switch(变量){
    //     case 情况1: 语句;break;
    //     case 情况2: 语句;break;
    //     case 情况3: 语句;break;
    // }

    // while        先判断在执行 ()
    // do...while   先执行一次在判断(先取值 ,在对取值进行判断的操作)
    // for          已知循环次数的前提下 for

    // 



    var m = 18;
    var n = 12;

    do {
        var mod = m % n;  // 18(被除数) / 12(除数) = 1(商) ... 6(余数)
        if (mod == 0) {
            break;
        }
        m = n; // 将原本的除数 -> 赋值给m     m = 12
        n = mod; // 将原本的余数 -> 赋值给n   n = 6;

    } while (mod != 0);
    console.log(n);










</script>

</html>